//package cn.bonoon.util;
//
//import java.util.ArrayList;
//import java.util.List;
//
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//
//import cn.bonoon.entities.AccountEntity;
//import cn.bonoon.entities.FlagType;
//import cn.bonoon.kernel.security.LogonUser;
//import cn.bonoon.kernel.security.StandardLogonUser;
//import cn.bonoon.kernel.util.StringHelper;
//
//public class UserDetailsUtils {
//
//	public static LogonUser buildLogonUser(AccountEntity user, List<String> roles, boolean forcedChangePasswordEnable) {
//		return new StandardLogonUser(user, parseAuthority(user, roles), forcedChangePasswordEnable);
////				user.getId(), 
////				user.getLoginName(), 
////				user.getLoginPwd(), 
////				parseEnabled(user), 
////				parseAuthority(user, roles), 
////				parseOnwer(user), 
////				user.getName(), 
////				forcedChangePasswordEnable && user.isForcedChangePwd(), 
////				user.getFlag());
//	}
//	
//	protected static List<GrantedAuthority> parseAuthority(AccountEntity user, List<String> roles){
//		
//		/* 用来控制当前用户可以访问哪些路径； TODO 这个需要重视，以后尽量使用。 */
//		List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
//		List<String> tmpRoles = new ArrayList<String>();
//		for (String role : roles) {
//			StringHelper.toList(tmpRoles, role);
//		}
//		
//		if (tmpRoles.isEmpty()) {
//			if (user.getFlag() == FlagType.SUPER){
//				// 超级管理员
////				log.info("超级管理员登录：{}", user.getLoginName());
//				authorities.add(new SimpleGrantedAuthority("ROLE_ADMIN"));
//			}
//		} else {
//			for (String r : tmpRoles) {
//				authorities.add(new SimpleGrantedAuthority(r));
//			}
//		}
//		
//		return authorities;
//	}
//	
////	protected static boolean parseEnabled(AccountEntity user){
////		return user.getStatus() == AccountEntity.NORMAL;
////	}
////	
////	protected static long parseOnwer(AccountEntity user){
////		if(EntityOwner.class.isAssignableFrom(user.getClass())){
////			/*
////			 * 这里是为了支持使用域管理账号直接登录的情况；
////			 * 
////			 * 但具体如何处理，还没设计、实现
////			 */
//////			log.info("当前为域管理账号登录系统：{}", user.getLoginName());
////			return user.getId();
////		}
////		return user.getOwnerId();
////	}
//}
